package com.hulk.rpc.config.common;

import cn.hutool.core.lang.Singleton;
import com.hulk.rpc.config.client.AppConfig;
import com.hulk.rpc.config.server.RegistryConfig;
import com.hulk.rpc.config.server.ServerConfig;
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;

import java.util.List;

/**
 * @author xuxukang
 * @date 2019-04-16 22:03
 */
public class ParseUtils {

  private static final String DEFAULT_APP_KEY = "apps";
  private static final String DEFAULT_REGISTRY_KEY = "registries";

  /**
   * 解析AppConfig的配置文件
   *
   * @param resourceName 资源文件名
   */
  public List<AppConfig> parseAppConfigs(String resourceName) {
    Config config = ConfigFactory.load(resourceName);
    return AppConfig.parse(config.getConfigList(DEFAULT_APP_KEY));
  }

  /**
   * 解析服务端注册相关配置信息
   *
   * @param resourceName 资源文件名
   */
  public List<RegistryConfig> parseRegistryConfigs(String resourceName) {
    Config config = ConfigFactory.load(resourceName);
    return RegistryConfig.parseList(config.getConfigList(DEFAULT_REGISTRY_KEY));
  }

  /**
   * 解析服务端完整配置信息
   *
   * @param resourceName 资源路径
   */
  public ServerConfig parseServerConfig(String resourceName) {
    Config config = ConfigFactory.load(resourceName);
    return ServerConfig.parse(config);
  }

  public static ParseUtils getInstance() {
    return Singleton.get(ParseUtils.class);
  }

}
